#include <bits/stdc++.h>
using namespace std;

class Test{
public:
	vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
		stack<int> st;
		vector<int> result(nums1.size(),-1);
		unordered_map<int,int> ma;
		for(int i = 0;i < nums1.size();i++){
			ma[nums1[i]] = i;
		}
		
		for(int i = 0;i < nums2.size();i++){
			while(!st.empty() && nums2[i] > nums2[st.top()]){
				// 1. 找到了栈顶元素的下一个最大的值了，那就看看栈顶下标的值是否是nums1的元素
				if(ma.find(nums2[st.top()]) != ma.end()){
					result[ma[nums2[st.top()]]] = nums2[i];
				}
				st.pop();
			}
			st.push(i);
		}
		return result;
	}
};


int main(){
	
	return 0;
}
